ในรูบี้ การย้าย ออกไปนอกเส้นทางที่ราบรื่น หมายถึงการเปลี่ยนจากตรรกะแบบลำดับชั้นมาสู่ท่าทีป้องกัน โดยที่ข้อผิดพลาดจะถูกมองว่าเป็น วัตถุระดับแรก แทนที่จะเป็นภัยพิบัติที่ทำให้โปรแกรมหยุดทำงาน
1. โครงสร้างของข้อผิดพลาด
รูบี้กำหนดโครงสร้างของข้อผิดพลาดอย่างเป็นระบบ ซึ่งแสดงใน รูปที่ 8.1ทุกข้อผิดพลาดเป็นอินสแตนซ์ของคลาสภายในต้นไม้โครงสร้างนี้ เริ่มต้นจาก Exception รากฐาน ความเข้าใจโครงสร้างนี้มีความสำคัญมาก: ข้อผิดพลาดระดับแอปพลิเคชันโดยทั่วไปจะสืบทอดมาจาก StandardErrorขณะที่ข้อผิดพลาดระดับระบบ (เช่น NoMemoryError) จะสืบทอดโดยตรงจาก Exception.
2. ข้อผิดพลาดในฐานะวัตถุข้อมูล
แตกต่างจากภาษาชั้นต่ำที่ข้อผิดพลาดอาจเป็นแค่รหัสกลับคืนเพียงอย่างเดียว รูบี้ บรรจุบริบท—รวมถึงข้อความและเส้นทางการดำเนินงานที่เกิดข้อผิดพลาด—ลงในวัตถุแบบเป็นทางการ ซึ่งทำให้นักพัฒนาสามารถจัดการกับการหยุดชะงักระหว่างรันได้เหมือนกับข้อมูลที่ตรวจสอบและจัดการผ่านการสืบทอดได้